/*
 * Funciones.c
 *
 *  Created on: Dec 17, 2014
 *      Author: Sengo
 */
#include <stdio.h>
#include <stdlib.h>
#include "Funciones.h"
#include <string.h>

int opcion() {
	int opc;
	puts("MENU PARA LA GESTION DE TIENDAS");
	puts("\t1-. Crear array de tiendas\n");
	puts("\t2-.Inicializar tiendas\n");
	puts("\t3-.Inicializar las prendas de las tiendas\n");
	puts("\t4-.Crear almacen\n");
	puts("\t5-.Inicializar las prendas del almacen\n");
	puts("\t6-.Visualizar los datos de las tiendas y del almacen\n");
	puts("\t7-.Abrir una tienda nueva\n");
	puts("\t8-.Listado de prendas agotadas en el almacen\n");
	puts("\t9-.Salir\n");
	printf("\t-->");
	scanf("%d", &opc);
	fflush(stdin);
	return opc;
}

void crearTiendas(Cadena *cadena) {
	int numTiendas, i;
	Tienda* tiendas;
	Cadena cad;
	system("clear");
	printf("\tIntroduzca el número de tiendas: ");
	scanf("%d", &numTiendas);
	tiendas = (Tienda*) malloc(numTiendas * sizeof(Tienda));
	puts("\tOficina de Gestion de Tiendas");
	cad.contacto = crearContacto();
	cad.n_tiendas = numTiendas;
	cad.p_tiendas = tiendas;
	*cadena = cad;
	free(tiendas);
}

Contacto crearContacto() {
	Contacto contacto;
	printf("\tIntroduzca Dirección: ");
	scanf("%s", contacto.direccion);
	while (getchar() != '\n')
		;
	printf("\tIntroduzca Telefono: ");
	fgets(contacto.tfno, sizeof(contacto.tfno), stdin);
	while (getchar() != '\n')
		;
	printf("\tIntroduzca E-mail: ");
	fgets(contacto.e_mail, sizeof(contacto.e_mail), stdin);
	fflush(stdin);
	return contacto;
}

void IniTiendas(Tienda *p_tiendas, int n_tiendas) {
	int i;
	system("clear");
	if (n_tiendas != 0) {
		for (i = 0; i < n_tiendas; i++) {
			printf("\tTienda %d ****************\n", (i + 1));
			Tienda tienda = IniTienda();
			p_tiendas[i].codigo = tienda.codigo;
			p_tiendas[i].contacto = tienda.contacto;
			p_tiendas[i].n_prendas = tienda.n_prendas;
			p_tiendas[i].p_prendas = tienda.p_prendas;
			fflush(stdin);
		}
		system("clear");
		puts("\t --> Tiendas inicializadas");
	} else {
		puts("\t--> No hay tiendas activas");
	}
}
void IniPrendasTiendas(Tienda *p_tiendas, int n_tiendas) {
	int i, j, codigo, nPrendas;
	int encontradoTienda, finalizado = 0;
	char ref[15];
	system("clear");
	if (n_tiendas != 0) {
		fflush(stdin);
		printf("\tIntroduzca cógido de Tienda: ");
		scanf("%d", &codigo);
		puts("\t-->PRENDAS ES STOCK");
		for (i = 0; i < n_tiendas && encontradoTienda == 0; i++) {
			if (p_tiendas[i].codigo == codigo) {
				fflush(stdin);
				printf("\tIntroduzca referencia: ");
				scanf("%s", ref);
				for (j = 0; j < p_tiendas[i].n_prendas && finalizado == 0;
						j++) {
					if (p_tiendas[i].p_prendas[j].ref == ref) {
						puts("\t-->Prenda encontrada");
						printf("\tUnidades disponibles: %d\n",
								p_tiendas[i].p_prendas[j].n_uds);
						printf("\tPrendas que desea añadir: ");
						scanf("%d", &nPrendas);
						p_tiendas[i].p_prendas[j].n_uds += nPrendas;
						finalizado = 1;
					} else {
						p_tiendas[i].p_prendas[j] = IniPrenda(ref);
						printf("Tipo: %d", p_tiendas[i].p_prendas[j].tipo);
						finalizado = 1;
					}
				}
				fflush(stdin);
				encontradoTienda = 1;
			}
		}
		if (encontradoTienda == 0) {
			system("clear");
			puts("--> NO HAY NINGUNA TIENDA CON ESE CODIGO");
		}
	} else {
		puts("\t--> No hay tiendas activas");
	}
}

Prenda IniPrenda(char ref[15]) {
	int elegido = 0, opc, i;
	TipoPrenda tipo;
	Color color;
	char h_m;
	int n_uds;
	float precio;
	Prenda prenda;
	fflush(stdin);
	strncpy(prenda.ref, ref, 15);
	printf("\tIntroduzca talla (S, M, L, 38, 40, 42): ");
	fgets(prenda.talla, 5, stdin);
	while (getchar() != '\n')
		;
	do {
		puts("\tTipo de prendas\n");
		puts("\t1-. camiseta\n");
		puts("\t2-. camisa\n");
		puts("\t3-. pantalon\n");
		puts("\t4-. falda\n");
		puts("\t5-. vestido\n");
		puts("\t6-. zapatos\n");
		puts("\t7-. jersey\n");
		puts("\t8-. chaqueta\n");
		printf("\t-->Elija opción: ");
		scanf("%d", &opc);
		printf("opc: %d", opc);
		/**for (i = camiseta; i != chaqueta; i++) {
		 printf("i: %d, tipo: %d", i, opc);
		 if (i == opc) {
		 tipo = (TipoPrenda) i;
		 elegido = 1;
		 }
		 }*/
		fflush(stdin);
	} while (elegido != 1);
	elegido = 0;
	do {
		puts("\tColor\n");
		puts("\t1-. blanco\n");
		puts("\t2-. amarillo\n");
		puts("\t3-. naranja\n");
		puts("\t4-. rosa\n");
		puts("\t5-. rojo\n");
		puts("\t6-. verde\n");
		puts("\t7-. azul\n");
		puts("\t8-. morado\n");
		puts("\t9-. marron\n");
		puts("\t10-. negro\n");
		printf("\t-->Elija opción: ");
		scanf("%d", &opc);
		for (i = blanco; i != negro; i++) {
			if (i == opc) {
				color = (Color) i;
				elegido = 1;
			}
		}
		fflush(stdin);
	} while (elegido != 1);
	elegido = 0;
	do {
		printf("Hombre o Mujer (h o m): ");
		h_m = getchar();
		if (h_m == 'h' || h_m == 'm') {
			elegido = 1;
		}
	} while (elegido != 1);
	printf("Número de prendas: ");
	scanf("%d", &n_uds);
	printf("Precio");
	scanf("%f", &precio);

	prenda.tipo = tipo;
	prenda.color = color;
	prenda.h_m = h_m;
	prenda.n_uds = n_uds;
	prenda.precio = precio;
	return prenda;
}

Tienda IniTienda() {
	Prenda* prendas;
	int numPrendas;
	Tienda tienda;
	tienda.codigo = ++codigo;
	tienda.contacto = crearContacto();
	printf("\tIntroduzca el número de prendas en stock: ");
	scanf("%d", &numPrendas);
	tienda.n_prendas = numPrendas;
	prendas = (Prenda*) malloc(numPrendas * sizeof(Prenda));
	tienda.p_prendas = prendas;
	return tienda;
}
